package com.reactim.message.config;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * 连接监控配置
 * 配置心跳检测和连接监控相关参数
 */
@Configuration
@ConfigurationProperties(prefix = "connection.monitoring")
@EnableScheduling
@Data
@Slf4j
public class MonitoringConfig {

    /**
     * 是否启用连接监控
     */
    private boolean enabled = true;
    
    /**
     * 心跳检测间隔（毫秒）
     */
    private long heartbeatIntervalMs = 30000;
    
    /**
     * 不活跃阈值（毫秒）
     * 超过此时间未活跃的连接被视为不活跃
     */
    private long inactivityThresholdMs = 300000; // 5分钟
    
    /**
     * 是否自动移除不活跃连接
     */
    private boolean autoRemoveInactive = true;
    
    /**
     * 是否自动移除心跳失败的连接
     */
    private boolean autoRemoveFailedHeartbeat = true;
    
    /**
     * 是否发送实际心跳消息
     * 如果为false，则只更新最后活跃时间
     */
    private boolean sendActualHeartbeat = true;
    
    /**
     * 统计报告生成间隔（毫秒）
     */
    private long reportIntervalMs = 60000;
    
    /**
     * 是否启用连接事件记录
     */
    private boolean enableEventLogging = true;
    
    /**
     * 是否启用监控仪表板
     */
    private boolean enableDashboard = true;
}